# 1.导包
import unittest

# 2.创建测试用例的类
from api.loginApi import LoginApi

class TestLoginApi(unittest.TestCase):

    # 3.登陆成功（正确的用户名和密码）
    def test01_login_success(self):
        # 1.实例化封装登录模块的类
        login_api = LoginApi()
        # 2.调用封装的登陆方法，获取响应结果（response对象）
        # 定义一个字典变量，用来接收请求体的数据
        json_dict = {"mobile": "13800000002", "password": "123456"}
        res = login_api.login(json_dict)
        # 将响应数据解析为JSON
        print(res.json())
        # 3.断言
        # 3.1断言状态码=200
        # 获取实际的状态码
        act_status = res.status_code
        self.assertEqual(200,act_status)

        # 3.2断言响应数据
        # 从响应结果中（response对象），将响应数据解析为JSON
        res_json = res.json()
        print(res_json)
        # 断言success
        # 获取实际的success的值
        act_success = res_json.get("success")
        self.assertEqual(True, act_success)
        # 断言code
        # 获取实际的code的值
        act_code = res_json.get("code")
        self.assertEqual(10000, act_code)

        # 断言message
        # 获取实际的message的值
        act_message = res_json.get("message")
        self.assertIn("成功", act_message)


    # 4.登陆失败（不传请求体）
    def test02_login_no_body(self):
        # 1.实例化封装登录模块的类
        login_api = LoginApi()
        # 2.调用封装的登陆方法，获取响应结果（response对象）
        # 定义一个字典变量，用来接收请求体的数据
        json_dict = None
        res = login_api.login(json_dict)
        # 将响应数据解析为JSON
        print(res.json())
        # 3.断言
        # 3.1断言状态码=200
        # 获取实际的状态码
        act_status = res.status_code
        self.assertEqual(200, act_status)

        # 3.2断言响应数据
        # 从响应结果中（response对象），将响应数据解析为JSON
        res_json = res.json()
        print(res_json)
        # 断言success
        # 获取实际的success的值
        act_success = res_json.get("success")
        self.assertEqual(False, act_success)
        # 断言code
        # 获取实际的code的值
        act_code = res_json.get("code")
        self.assertEqual(99999, act_code)

        # 断言message
        # 获取实际的message的值
        act_message = res_json.get("message")
        self.assertIn("抱歉", act_message)
